The present invention relates to providing runtime support for applications developed for different frameworks, and more specifically to techniques for providing a portal that is capable of executing portal components developed based upon different frameworks and languages.
Various computing frameworks or platforms have evolved over the years in the computer industry. Examples of such computing frameworks include the .NET computing framework from Microsoft Corporation, Java-based frameworks such as the Java 2 Platform, Enterprise Edition (J2EE) framework from Sun Microsystems, Inc., and others. Each framework can be considered a group (sometime called a “stack”) of common services that each framework provides to applications that are built with or run on the framework.
The .NET framework is a framework provided by Microsoft for programming support for web services that provide a user the ability to use the Web rather than the user's computer for various services. .NET provides users with a Web-enabled interface for applications and computing devices and makes computing activities increasingly Web browser-oriented. The .NET framework includes servers; building-block services, such as Web-based data storage, and device software. The .NET framework also enables developers to create reusable modules that can be used in the .NET framework. Common Language Runtime (CLR) provides a foundation for building applications and components for the .NET framework.
J2EE is a Java-based application server framework from Sun Microsystems, Inc. for the development of distributed applications. J2EE and is designed for simplifying application development in a multi-tiered environment by enabling users to create standardized, reusable modular components. J2EE includes many components of the Java 2 Framework, Standard Edition (J2SE). The J2EE framework consists of a set of services, application programming interfaces (APIs), and protocols that provide the functionality for developing multi-tiered, Web-based applications.
Each framework generally supports its own set of programming languages, design environments, programming conventions, programming methodologies, programming APIs, messaging services, security services, etc. that may be used to build applications for the specific framework. For example, the Java language is used to build applications for the J2EE framework. A Java Development Kit (JDK) is provided for building applications for the J2EE framework. On the other hand, languages that can be used to build applications for the .NET framework include C++, C#, Visual Basic .NET, J#, ASP.NET, etc (referred to as the “.NET languages”).
The runtime environment that is needed to support and execute applications written for a particular framework also differs from the runtime environment for other frameworks. For example, a Java stack or Java Virtual Machine (JVM) running on a UNIX machine is generally needed for running applications that are built for the J2EE framework. An Internet Information Services (IIS) Server running on a Microsoft Windows machine and CLR compilers are generally needed for running applications developed for the .NET framework.
Due to the potential differences in programming languages, design environments, and runtime environments associated with various disparate frameworks, it is usually difficult for applications written for one framework to interface with applications running on another framework that is not compatible with the first framework. As a result, when a particular application is to be developed, developers generally adopt a specific framework and build applications and services for the adopted framework.
For example, enterprise portal products developed by SAP AG are based upon a Java framework such as J2EE framework. As a result, a SAP Portal supports components (e.g., portal snippets or iViews) developed in a J2EE environments using Java. Such components are commonly referred to as Java components. Components developed for a .NET framework (“.NET components”) using a .NET language cannot be properly integrated to use services provided by the SAP Java-based portal. This has proven to be a major impediment for .NET developers to write components for SAP portals. While several “hacks” have been developed in the past to enable .NET components to be somewhat “functional” in a SAP J2EE Portal environment, the extent of the functionality is very limited, rudimentary, inefficient, and achieves poor performance. For example, a separate IIS server is needed to handle .NET requests from the .NET component, further complicating the overall portal.
In light of the above, techniques are desired that provide support for runtime execution of applications and components developed for different frameworks.